package com.cloud.bssp.netty.bytebuf;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;

/**
 * @description： TODO
 * @author：weirx
 * @date：2021/11/12 10:19
 * @version：3.0
 */
public class RetainAndReleaseTest {

    public static void main(String[] args) {

        ByteBuf byteBuf = ByteBufAllocator.DEFAULT.buffer();

        //打印当前的引用计数
        System.out.println("初始化后的引用计数" + byteBuf.refCnt());

        //释放引用计数
        byteBuf.release();
        //打印当前的引用计数
        System.out.println("释放后的引用计数" + byteBuf.refCnt());

        //调用byteBuf
        try {
            byteBuf.writeInt(888);
        } catch (Exception e) {
            System.out.println("释放后调用异常：" + e);
        }

        //增加引用计数
        try {
            byteBuf.retain();
        } catch (Exception e) {
            System.out.println("释放后增加引用计数异常：" + e);
        }

        // 重新分配
        byteBuf = ByteBufAllocator.DEFAULT.buffer();
        //调用byteBuf
        byteBuf.writeInt(888);
        System.out.println("重新分配后的引用计数" + byteBuf.refCnt());
    }
}
